package com.lanhe.app.controller.order;

import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson2.JSON;
import com.lanhe.common.constant.Constants;
import com.lanhe.common.core.controller.BaseController;
import com.lanhe.common.core.domain.AjaxResult;
import com.lanhe.common.core.page.TableDataInfo;
import com.lanhe.common.utils.StringUtils;
import com.lanhe.common.utils.haoka.dto.OrdersHaokaApplyNoticeDto;
import com.lanhe.order.domain.LhOrdersHaoka;
import com.lanhe.order.domain.dto.LhOrdersHaokaApplyDto;
import com.lanhe.order.service.ILhOrdersHaokaService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;


/**
 * 号卡-订单
 *
 * @author zhanggl
 * @date 2023年12月25日22:32:59
 */
@RestController
@RequestMapping("/api/haoka/orders")
@Slf4j
public class ApiLhOrdersHaokaController extends BaseController {

	@Resource
	private ILhOrdersHaokaService ordersHaokaService;


	/**
	 * 分页查询所有数据
	 */
	@GetMapping("/list")
	public TableDataInfo list(LhOrdersHaoka ordersHaoka) {
		startPage();
		ordersHaoka.setMemberId(getUserId());
		List<LhOrdersHaoka> list = ordersHaokaService.selectOrdersList(ordersHaoka);
		for (LhOrdersHaoka lhOrdersHaoka : list) {
			lhOrdersHaoka.setStatusName(Constants.KayuStatus.getKayuStatus(lhOrdersHaoka.getStatus()));
		}
		return getDataTable(list);
	}


	/**
	 * 新增数据（敢探号提单）
	 *
	 * @param applyDto 实体对象
	 * @return 新增结果
	 */
	@PostMapping("/add")
	public AjaxResult add(@RequestBody LhOrdersHaokaApplyDto applyDto) throws Exception {

		log.info("ApiLhOrdersHaokaController--->add 号卡采购入参：【{}】", JSON.toJSONString(applyDto));
		if (StringUtils.isBlank(applyDto.getUserKey())) {
			return error("用户标识为必须条件");
		}
		if (ObjectUtil.isNull(applyDto.getProductId())) {
			return error("产品ID为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getIdName())) {
			return error("身份证姓名为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getIdNum())) {
			return error("身份证号为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getName())) {
			return error("收货人姓名为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getMobile())) {
			return error("收货人手机号为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getProvinceCode())) {
			return error("收货地址-省编码为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getProvince())) {
			return error("收货地址-省为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getCityCode())) {
			return error("收货地址-市编码为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getCity())) {
			return error("收货地址-市为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getDistrictCode())) {
			return error("收货地址-区/县编码为必须条件");
		}
		if (StringUtils.isBlank(applyDto.getDistrict())) {
			return error("收货地址-区/县为必须条件");
		}
		return toAjax(ordersHaokaService.insertOrdersHaoka(applyDto));
	}

	/**
	 * 敢探号提单-回调通知
	 *
	 * @param params 实体对象
	 * @return 结果
	 */
	@PostMapping("/purchaseNotice")
	public Object purchaseNotice(OrdersHaokaApplyNoticeDto params) throws Exception {
		log.info("ApiLhOrdersHaokaController--->purchaseNotice 号卡采购回调：【{}】", JSON.toJSONString(params));
		ordersHaokaService.purchaseNotice(params);
		return "SUCCESS";
	}
}

